package com.lagou.server;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;

import com.lagou.model.User;

/**
 * 编程实现服务器端对学员账户信息的管理
 */
public class ServerUserDao {
    // 声明成员变量
    private List<User> userList;

    /**
     * 自定义构造方法实现成员变量的初始化
     * @param userList
     */
    public ServerUserDao(List<User> userList) {
        this.userList = userList;
    }

    /**
     * 自定义成员方法实现将文件中所有学员账户信息读取到List集合中并返回
     * @throws IOException
     * @throws FileNotFoundException
     * @throws ClassNotFoundException
     */
    @SuppressWarnings("unchecked")
    public List<User> readUserFile() throws FileNotFoundException, IOException, ClassNotFoundException {
        // 判断文件是否存在，只有文件存在且有内容时才需要读取文件中的信息
        File f1 = new File("./user.txt");
        if(f1.exists() && f1.length() > 48) {
            ObjectInputStream ois = new ObjectInputStream(
                    new FileInputStream(f1));
            userList = (List<User>) ois.readObject();
            ois.close();
        }
        return userList;
    }

    /**
     * 自定义成员方法实现将集合中的所有学员账户信息写入到文件中
     * @throws IOException
     * @throws FileNotFoundException
     */
    public void writeUserFile() throws FileNotFoundException, IOException {
        ObjectOutputStream oos = new ObjectOutputStream(
                new FileOutputStream("./user.txt"));
        oos.writeObject(userList);
        oos.close();
        System.out.println("保存所有学员账户信息成功！");
    }
}
